/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.tesis2.pucp.Envio.Controlador;

import com.tesis2.pucp.Envio.DAO.ClienteDAO;
import com.tesis2.pucp.Envio.Vista.BuscarClienteGUI;
import com.tesis2.pucp.Envio.Vista.ClienteGUI;
import com.tesis2.pucp.Modelo.TesisCliente;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;


/**
 *
 * @author jorge
 */
public class BuscarClienteControlador {
    private ClienteDAO m;
    private BuscarClienteGUI buscarClienteView;
    private ArrayList<TesisCliente> lstCliente;
    private ArrayList<String> lstEstado;
    private final static int ESTADO_ACTIVO=1;
    private final static int ESTADO_INACTIVO=2;
        
    public BuscarClienteControlador(ClienteDAO dao, BuscarClienteGUI v){
        m = dao;
        buscarClienteView = v;
       
        buscarClienteView.addBuscarListener(new listarClientes() );
        buscarClienteView.addEditarListener(new editarClienteListener(this));
        buscarClienteView.addNuevoListener(new crearClienteListener(this));
        buscarClienteView.addLimpiarListener(new limpiarListener());
        buscarClienteView.addELiminarListener(new eliminarListener());
        buscarClienteView.addActivarListener(new activarListener()); 
        
    }

    public void listarResultados(){
        lstCliente = m.listarClientes();               
        buscarClienteView.llenaGrilla(lstCliente);        
    }
    
    class listarClientes implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e) {
            listarResultados();
        }
    }
        
    class crearClienteListener implements ActionListener {
        
        private BuscarClienteControlador buc;
        public crearClienteListener(BuscarClienteControlador buscarcliente){
            buc=buscarcliente;
        }
                
        @Override
        public void actionPerformed(ActionEvent e) {
            ClienteGUI p = new ClienteGUI(buscarClienteView.getPadre(), true);
            ClienteControlador c = new ClienteControlador (m,p,buc,null);
            p.setVisible(true);
        }
    
    }    
    
    class editarClienteListener implements ActionListener {
        
        private BuscarClienteControlador buc;
        public editarClienteListener(BuscarClienteControlador buscarcliente){
            buc=buscarcliente;
        }
        @Override
        public void actionPerformed(ActionEvent e) {            
            int sel=buscarClienteView.getFilaSel();
            if (sel!=-1){
                ClienteGUI p = new ClienteGUI(buscarClienteView.getPadre(), true);
                TesisCliente u = lstCliente.get(sel);                
                ClienteControlador c = new ClienteControlador (m,p,buc,u);
                p.setVisible(true);                
            }
        }
    
    } 
        
    class limpiarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            buscarClienteView.LimpiarDatos();
        }        
    }    
    
    class eliminarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            int sel=buscarClienteView.getFilaSel();
            if (sel!=-1){
                if (buscarClienteView.solicitarConfirmacion("¿Desea inactivar a este cliente?")==0){
                    TesisCliente u = lstCliente.get(sel); 
                    u.setEstado(ESTADO_INACTIVO);
                    m.guardarCliente(u);
                    buscarClienteView.mostrarAviso("Se inactivó el cliente con éxito");
                    listarResultados();
                }
            }
            else{
                buscarClienteView.mostrarError("Debe seleccionar un cliente");
            }
        }        
    }       
    
    class activarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            int sel=buscarClienteView.getFilaSel();
            if (sel!=-1){
                if (buscarClienteView.solicitarConfirmacion("¿Desea reactivar a este cliente?")==0){                
                    TesisCliente u = lstCliente.get(sel);
                    u.setEstado(ESTADO_ACTIVO);
                    m.guardarCliente(u);
                    buscarClienteView.mostrarAviso("Se reactivó el cliente con éxito");
                    listarResultados();
                }
            }
            else{
             buscarClienteView.mostrarError("Debe seleccionar un cliente");   
            }               
        }        
    }       
}
